
require "./validaciones.pl";

sub guardarListado(){
	my $filename = ($_[0]);
	my $salida = ($_[1]);	
	open (SALIDA,">$filename")|| die "No es posible grabar los listados en $filename. Verifique permisos y si se corrio el comando fepini.\n";
	print SALIDA $salida;
	close (SALIDA);
}

sub agregarGuardarAListado(){
	my $filename = ($_[0]);
	my $salida = ($_[1]);	
	open (SALIDA,">>$filename")|| die "No es posible grabar los listados en $filename. Verifique permisos y si se corrio el comando fepini.\n";
	print SALIDA $salida;
	close (SALIDA);
}

#carga el hash resultado consulta por rango de montos
sub listarPorMonto() {
	my $montoDesde = ($_[0]);
	my $montoHasta = ($_[1]);
	my $estado = ($_[2]);	
	my $montoActual = 0;
	my $montoTotal = 0;
	my $filename = "$ENV{'grupo'}/facturas/apagar.txt";
	my %hmontos;	
	open(ENT,"<$filename")|| die "NO SE PUEDE REALIZAR LA CONSULTA. No se encontro el archivo $filename \n";
	while($linea = <ENT>){
		chomp($linea);
		@campos = split(";",$linea);
		$montoActual = $campos[3];
		$fechaActual = $campos[2];
		$estadoActual = $campos[1];
		if((($montoActual >= $montoDesde)&& ($montoActual <= $montoHasta)) && ($estadoActual eq $estado || $estado eq "TODOS")){
			$separador = ";";
			$montosValor = join(" | ",@campos);
			$montosValor.=" | ".obtenerSemanaFecha($fechaActual);
			$clave = $campos[3].$separador.$campos[0].$separador.$campos[2].$separador.$campos[3];	
			$hmontos{$clave} = $montosValor;		
		}
	}
	close(ENT);
	return %hmontos;
}


sub obtenerDiario(){
#Todas las claves van a tener campoFiltro-nroFactura-Fecha-monto
	%hResultados = @_;
	while(@lista = each(%hResultados)){
		@campos = split(";",$lista[0]);
		$fecha = $campos[2];
		$monto = $campos[3];
		$hDiario{$fecha} += $monto;	
			
		}	

	return %hDiario;
}

sub obtenerSemanal(){
#Todas las claves van a tener campoFiltro-nroFactura-Fecha-monto
	my %hResultados = @_;
	while(@lista = each(%hResultados)){
		@campos = split(";",$lista[0]);
		$fecha = $campos[2];
		$monto = $campos[3];
		$semana = obtenerSemanaFecha($fecha);			
		$hSemanal{$semana} += $monto;	
			
		}	

	return %hSemanal;
}

sub obtenerMensual(){
#Todas las claves van a tener campoFiltro-nroFactura-Fecha-monto
	my %hResultados = @_;
	while(@lista = each(%hResultados)){
		@campos = split(";",$lista[0]);
		$fecha = $campos[2];
		$monto = $campos[3];
		$mes = obtenerMesFecha($fecha);			
		$hMensual{$mes} += $monto;	
			
		}	

	return %hMensual;
}

sub obtenerMontoTotal(){
#Todas las claves van a tener campoFiltro-nroFactura-Fecha-monto
	my %hResultados = @_;
	my $montoTotal = 0;
	while(@lista = each(%hResultados)){
		@campos = split(";",$lista[0]);
		$monto = $campos[3];
		$montoTotal = $montoTotal + $monto;	
		}	
	return $montoTotal;
}

#carga el hash resultado consulta por rango de fechas
sub listarPorRangoFechas() {
	my $fechaDesde = $_[0];
	my $fechaHasta = $_[1];	
	my $estado = $_[2];
	my $filename = "$ENV{'grupo'}/facturas/apagar.txt";
	my %hfechas;
	open(ENT,"<$filename")|| die "NO SE PUEDE REALIZAR LA CONSULTA. No se encontro el archivo $filename \n";

	while($linea = <ENT>){
		chomp($linea);
		@campos = split(";",$linea);
		$fechaActual = $campos[2];
		$estadoActual = $campos[1];
		
		my $comparacionMayor = compararFechasMio($fechaActual,$fechaDesde);	
		my $comparacionMenor = compararFechasMio($fechaActual,$fechaHasta);
		
		if((($comparacionMayor == 1) || ($comparacionMayor == 0)) 
		&& (($comparacionMenor == 3) || ($comparacionMenor == 0)) 
		&& ($estadoActual eq $estado || $estado eq "TODOS"))
		{  	
			$separador = ";";
			$fechasValor = join(" | ",@campos);
			$fechasValor.= " | ".obtenerSemanaFecha($fechaActual);
			$clave = $campos[2].$separador.$campos[0].$separador.$campos[2].$separador.$campos[3];	
			$hfechas{$clave} = $fechasValor;			
		}
	}
	close(ENT);
	return %hfechas;
}

sub listarDisponibilidad() {
	my $filename = "$ENV{'grupo'}/prin/presu.txt";	
	open(ENT,"<$filename")|| die "NO SE PUEDE REALIZAR LA CONSULTA. No se encontro el archivo $filename \n";
	while($linea = <ENT>){
		chomp($linea);
		@campos = split(";",$linea);
		$valor = join(" | ",@campos);
		$clave = $campos[0];

		$hDisponible{$clave} = $valor;	
	}
	close(ENT);
	return %hDisponible;
}


1;#necesario
